package com.momo.hr.controller;

import com.momo.hr.bean.ChatMessage;
import com.momo.hr.bean.Hr;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;

import java.util.Date;

/**
 * 消息处理类
 */

@Controller
public class WsController {

    //如果使用了WebSocket就可以完成对应的SimpMessagingTemplate 的注入
    @Autowired
    SimpMessagingTemplate messagingTemplate;

    /**
     *
     * @param authentication SpringSecurity中的authentication对象，（包含了当前系统用户所有信息）
     * @param chatMessage
     */
    @MessageMapping("/ws/chat")
    public void handleMsg(Authentication authentication, ChatMessage chatMessage){
        System.out.println(((Hr)authentication.getPrincipal()).getName());
        chatMessage.setForm(((Hr)authentication.getPrincipal()).getUsername());//拿到发送消息的用户名
        chatMessage.setFromNickName(((Hr)authentication.getPrincipal()).getName());//拿到当前用户登录的名称
        chatMessage.setDate(new Date());
        //这个方法的三个参数分别代表（[发送给谁],[发送前端的队列],[发送的内容]）
        messagingTemplate.convertAndSendToUser(chatMessage.getTo(),"/queue/chat",chatMessage);

    }

}
